package org.dromara.datacheck.domain.bo.jst;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.datacheck.domain.jst.JstSaleOutWarehouseOrder;

import java.util.Date;
import java.util.List;

/**
 * 聚水潭-销售出库单业务对象 jst_sale_out_warehouse_order
 *
 * @author 刘武贵
 * @date 2024-09-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = JstSaleOutWarehouseOrder.class, reverseConvertGenerate = false)
public class JstSaleOutWarehouseOrderBo extends BaseEntity {

    /**
     * id
     */
    @NotNull(message = "id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * id集合
     */
    private String ids;

    /**
     * 出库单号
     */
    @NotBlank(message = "出库单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outboundDeliveryOrderNumber;

    /**
     * 店铺编号
     */
    @NotBlank(message = "店铺编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shopNumber;

    /**
     * 店铺名称
     */
    @NotBlank(message = "店铺名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shopName;

    /**
     * 内部订单号
     */
    @NotBlank(message = "内部订单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String innerOrderNumber;

    /**
     * 出库日期
     */
    @NotNull(message = "出库日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date outboundDeliveryDate;

    /**
     * 出库日期
     */
    @NotNull(message = "出库日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outboundDeliveryDateNew;

    /**
     * 出库状态（0 待出库，1 已出库，2 已出库待发货，3 已出库并且已发货，4 归档，5 出库后作废，6 出库前作废，7 外部发货中，8 冻结
     */
    @NotBlank(message = "出库状态（0 待出库，1 已出库，2 已出库待发货，3 已出库并且已发货，4 归档，5 出库后作废，6 出库前作废，7 外部发货中，8 冻结不能为空", groups = { AddGroup.class, EditGroup.class })
    private String outboundStatus;

    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String productName;

    /**
     * 仓库
     */
    @NotBlank(message = "仓库不能为空", groups = { AddGroup.class, EditGroup.class })
    private String warehouse;

    /**
     * 款号
     */
    @NotBlank(message = "款号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String styleNumber;

    /**
     * 商品编码
     */
    @NotBlank(message = "商品编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String productNumber;

    /**
     * 金蝶的物料编码
     */
    @NotBlank(message = "金蝶的物料编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String jdMaterialCode;

    /**
     * 标准颜色规格
     */
    @NotBlank(message = "标准颜色规格不能为空", groups = { AddGroup.class, EditGroup.class })
    private String standardColorSku;

    /**
     * 数量
     */
    @NotNull(message = "数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long quantity;

    /**
     * 店铺名称集合
     */
    private List<String> shopNameList;

    /**
     * 单据日期（用于搜索）
     */
    @NotNull(message = "单据日期（用于搜索）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date newOrderDate;

    /**
     * 特殊处理的日期，用于和金蝶单据比对
     */
    private String compareDateToJd;

    /**
     * 数据标识  0 正常数据 1 金蝶不显示的物料编码 2 Link编码
     */
    private String dataSign;
}
